<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demo-06-数据代理</title>
</head>
<body>
<script text="text/javascript">
    let number = 19

    let person = {
        name: 'Blue',
        sex: '男',
    }

    // Object.defineProperty(数据代理的对象, 添加的对象, 代理数据的属性)

    Object.defineProperty(person, 'age', {
        // value: 19,          // 数据代理的值
        // enumerable: true,   // 控制属性是否可以枚举
        // writable: true,     // 控制属性是否可以被修改
        // configurable: true, // 控制属性是否可以被删除

        // 当有人读取 person 的 age 属性时, get 函数就会被调用, 且返回值就是 age 的值
        get() {
            console.log('person 的 age 值被读取了')
            // age 读取的值就是 number 的值
            return number
        },

        // 当有人修改 person 的 age 属性时, set 函数就会被调用, 且会收到修改的具体值
        set(value) {
            console.log('有人修改了 age 属性的值')
            number = value
        },
    })
</script>
</body>
</html>